The present invention is what is often called a software development system--that is, a system and method for facilitating the writing and modification of computer programs.
A commonly used, or at least advocated method of writing computer programs is called "top down" programming. The basic principle of top down programming is that the programmer should determine the general methodology to be used by the program and should design the basic structure of the program before focusing on the detailed aspects of actually writing the program.
However, there is a well known tendency among programmers to use what is known as the "bottom-up" approach to programming. A typical bottom-up strategy is to first attack the "hardest" problem or problems associated with a particular program, and then add the remaining code needed to complete the program. This approach to programming, typically results in computer programs which are poorly organized, difficult to modify without creating new problems, and undocumented for others needing to determine how the program works.
One of the goals of so-called fourth generation computer languages is to provide tools that encourage top-down programming, and to thereby generate well organized computer programs that are easy to understand and modify as needed. Fourth generation languages are also tools for improving programmer productivity by reducing the amount of effort required when using standard programming languages such as C, Pascal and Fortran.
Thus one of the objects of the present invention is to provide a program development system which encourages top-down programming.
Along with top-down programming, a related object of the present invention is to enable and facilitate prototyping--that is, enabling the programmer to prototype and test portions of a program, such as its visual appearance and menus, and then use the tested portions as a basis for adding the code necessary to make the program run.
One of the key concepts incorporated in the present invention is complete integration between the "objects" comprising a computer program and a hierarchical outline which represents the computer program. That is, for every object in the computer program (e.g., every subroutine, function, menu, dialogue box, and so on) there is a corresponding entry or set of entries in an expandable, multilevel outline.
The multilevel program outline generated by the present invention is a complete representation of a computer program. Using a specialized outline editor to build and modify hierarchical program outlines, each item in a program outline can be expanded or collapsed to provide the user access to all aspects of the program at the level of detail that the user wants. Thus the outline editor allows the programmer to see an entire program at one time without compromising the principles of top-down programming, sometimes herein referred to as progressive disclosure (i.e., the showing of progressively greater levels of detail as items in the outline are expanded to show their constituent elements).
Thus it is an object of the present invention to provide a program development system which generates hierarchical program outlines that completely represent the objects comprising a computer program.
Outline editors have been used in other types of software products, such as ThinkTank and More (both published by Symantec)--programs which help one organize one's thoughts using a collapsible outline structure.
While these outline editors could be used to write computer programs, these outliner editors generally put no limits or constraints on the nature of the items at each level of the outline hierarchy. Therefore the outline programs would allow the author to write programs with illegal syntax, and to use logically inconsistent combinations of objects and program statements.
One of the objects of the present invention is to provide a program development system which incorporates predefined limits on the types of program statements or objects that can be incorporated in a computer program, based on the context of that item in the hierarchical program outline which represents the computer program.
Another shortcoming of the prior art outliner editors is that they generally do not have a display oriented interface for generating menus and other display oriented program objects. Similarly, prior art programs for generating menus and other displays do not generate corresponding program outlines that can be viewed and edited by the user. It is therefore an object of the present invention to provide a display oriented user interface for generating display oriented program objects, and which automatically generates the outline items in the portion of the program outline corresponding to the program object being generated.